\subsubsection{x86}

Посмотрим, что у нас вышло (MSVC 2010):

\lstinputlisting[caption=MSVC 2010,style=customasmx86]{patterns/12_FPU/2_passing_floats/MSVC_RU.asm}

\myindex{x86!\Instructions!FLD}
\myindex{x86!\Instructions!FSTP}
\FLD и \FSTP перемещают переменные из сегмента данных в FPU-стек или обратно. 
\GTT{pow()}\footnote{стандартная функция Си, возводящая число в степень} достает оба значения из FPU-стека и 
возвращает результат в \ST{0}. 
\printf берет 8 байт из стека и трактует их как переменную типа \Tdouble.

Кстати, с тем же успехом можно было бы перекладывать эти два числа из памяти в стек при помощи пары \MOV:
 
ведь в памяти числа в формате IEEE 754, pow() также принимает их в том же
формате, и никакая конверсия не требуется.

Собственно, так и происходит в следующем примере с ARM: \myref{FPU_passing_floats_ARM}.

